package utils

import (
  "errors"
  "fmt"
  "time"

  "gorm.io/gorm"
)

//@author: [songzhibin97](https://github.com/songzhibin97)
//@function: ClearTable
//@description: 清理数据库表数据
//@param: db(数据库对象) *gorm.DB, tableName(表名) string, compareField(比较字段) string, interval(间隔) string
//@return: error

func ClearTable(db *gorm.DB, tableName string, compareField string, interval string) error {
  if db == nil {
    return errors.New("db Cannot be empty")
  }
  duration, err := time.ParseDuration(interval)
  if err != nil {
    return err
  }
  if duration < 0 {
    return errors.New("parse duration < 0")
  }
  return db.Debug().Exec(fmt.Sprintf("DELETE FROM %s WHERE %s < ?", tableName, compareField), time.Now().Add(-duration)).Error
}
